package org.merak.core.text.json;

import java.text.DateFormat;

import org.merak.core.model.Identifiable;

public enum DateStyle implements Identifiable<Integer> {

	//~ Enumerated values ////////////////////////////////////////////////////////
	//****************************************************************************
	UNKNOWN (-1),
	SHORT   ( DateFormat.SHORT  ),	
	MEDIUM  ( DateFormat.MEDIUM ),
	LONG    ( DateFormat.LONG   ),
	FULL    ( DateFormat.FULL   );

	//~ Attributes ///////////////////////////////////////////////////////////////
	//****************************************************************************
	private Integer id = -1;

	//~ Constructors /////////////////////////////////////////////////////////////
	//****************************************************************************
	private DateStyle(int id) {
		this.id = id;
	}
	
	//~ Methods //////////////////////////////////////////////////////////////////
	//****************************************************************************
	public boolean isUnknown() {
		return this == UNKNOWN;
	}
	//****************************************************************************	
	@Override
	public Integer getId() {
		return this.id;
	}
	//****************************************************************************
	@Override
	public boolean hasId(Integer index) {
		return this.id.equals(index);
	}
	//****************************************************************************
	@Override
	public Class<Integer> getIdentifierClass() {
		return Integer.class;
	}
	//****************************************************************************
	@Override
	public boolean selfsame(Identifiable<Integer> indentified) {
		return (indentified instanceof DateStyle) && this.hasId(indentified.getId());
	}
	//****************************************************************************
	public static DateStyle getValue(int id) {

		for (DateStyle e : DateStyle.values()) {
			if ( e.hasId(id) ) return e;
		}
		return DateStyle.UNKNOWN;

	}
	//****************************************************************************
	
}
